package cn.zwx.learn.mybatis.example.croe.plugin;


/** 
 * 拦截器接口，所有自定义拦截器必须实现此接口
 * @author zhangwenxue 
 * @date 2022/5/7 21:35
*/ 
public interface Interceptor {

    /**
     * 插件的核心逻辑实现
     * @param invocation 代理对象的封装
     * @return Object
     * @throws Throwable
     */
    Object intercept(Invocation invocation) throws Throwable;

    /**
     * 对被拦截对象进行代理
     * @param target 代理对象
     * @return Object
     */
    Object plugin(Object target);
}
